]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
main: Show welcome dialogue on first start
authorBastien Nocera <hadess@hadess.net>
Mon, 1 Feb 2021 12:31:41 +0000 (13:31 +0100)
committerMarge Bot <marge-bot@gnome.org>
Fri, 5 Feb 2021 13:41:26 +0000 (13:41 +0000)
This hooks the recently added welcome dialogue to be shown the first
time a new session is started, and disabled after that.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3632
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1619>

data/org.gnome.shell.gschema.xml.in
js/ui/main.js

index 0ae047e188ee1c2c3912f9bf0d2c0d63519dbb9d..55817e8797def631fc9d7d090ffa8b5fbd08546b 100644 (file)
         adapter is ever seen not to have devices associated to it.
       </description>
     </key>
+    <key name="welcome-dialog-last-shown-version" type="s">
+      <default>''</default>
+      <summary>The last version the “Welcome to GNOME” dialogue was shown for</summary>
+      <description>
+        This key determines when the “Welcome to GNOME” dialog was last shown for.
+        An empty string represents the oldest possible version, and huge number will
+        represents versions that do not exist yet, and should be used to disable the
+        dialogue should that be needed.
+      </description>
+    </key>
     <key name="introspect" type="b">
       <default>false</default>
       <summary>Enable introspection API</summary>
index f488279d07edc3712d24a904ce03982a425c528a..94c43dcce026fd3031069b2ad47fa9d80074de56 100644 (file)
@@ -47,9 +47,15 @@ const KbdA11yDialog = imports.ui.kbdA11yDialog;
 const LocatePointer = imports.ui.locatePointer;
 const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
 const ParentalControlsManager = imports.misc.parentalControlsManager;
+const Config = imports.misc.config;
+const Util = imports.misc.util;
 
 const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
 const STICKY_KEYS_ENABLE = 'stickykeys-enable';
+const WELCOME_DIALOG_LAST_SHOWN_VERSION = 'welcome-dialog-last-shown-version';
+// Make sure to mention the point release, otherwise it will show every time
+// until this version is current
+const WELCOME_DIALOG_LAST_TOUR_CHANGE = '40.beta';
 const LOG_DOMAIN = 'GNOME Shell';
 const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
 
@@ -297,6 +303,9 @@ function _initializeUI() {
         if (credentials.get_unix_user() === 0) {
             notify(_('Logged in as a privileged user'),
                    _('Running a session as a privileged user should be avoided for security reasons. If possible, you should log in as a normal user.'));
+        } else if (sessionMode.currentMode !== 'gdm' &&
+                   sessionMode.currentMode !== 'initial-setup') {
+            _handleShowWelcomeScreen();
         }
 
         if (sessionMode.currentMode !== 'gdm' &&
@@ -314,6 +323,14 @@ function _initializeUI() {
     });
 }
 
+function _handleShowWelcomeScreen() {
+    const lastShownVersion = global.settings.get_string(WELCOME_DIALOG_LAST_SHOWN_VERSION);
+    if (Util.GNOMEversionCompare(WELCOME_DIALOG_LAST_TOUR_CHANGE, lastShownVersion) > 0) {
+        openWelcomeDialog();
+        global.settings.set_string(WELCOME_DIALOG_LAST_SHOWN_VERSION, Config.PACKAGE_VERSION);
+    }
+}
+
 async function _handleLockScreenWarning() {
     const path = '%s/lock-warning-shown'.format(global.userdatadir);
     const file = Gio.File.new_for_path(path);